package com.catsic.base;

import java.io.Serializable;
import java.util.List;

/**
 * @author huyulei
 * 
 */
public interface BaseService<T , PK extends Serializable>{
	
	 /**
	 * add:创建实体
	 * @author yangyd
	 * @param entity
	 * @return
	 */
	T add(T entity);

	 /**
	 * delete:根据主键删除实体
	 * @author yangyd
	 * @param id
	 */
	void delete(PK id);
	
	 /**
	 * delete:删除实体
	 * @author yangyd
	 * @param entity
	 */
	void delete(T entity);

	/**
	 * delete:删除实体集合，如List、Set
	 * @author yangyd
	 * @param entities
	 */
	void delete(Iterable<? extends T> entities);
	
	 /**
	 * update:更新实体
	 * @author yangyd
	 * @param entity
	 */
	void update(T entity);
	
	
	 /**
	 * getById:根据主键获得实体
	 * @author yangyd
	 * @param id
	 * @return
	 */
	T getById(PK id);

	
	 /**
	 * exists:根据ID查看实体类是否存在，true 存在、false 不存在
	 * @author yangyd
	 * @param id
	 * @return
	 */
	boolean exists(PK id);

	
	 /**
	 * findAll:返回所有实体
	 * @author yangyd
	 * @return
	 */
	List<T> findAll();

	
	 /**
	 * findAll:根据给定的ID集合，返回实体List集合
	 * @author yangyd
	 * @param ids
	 * @return
	 */
	List<T> findAll(Iterable<PK> ids);

	
	 /**
	 * save:保存实体集合
	 * @author yangyd
	 * @param entities
	 * @return
	 */
	<S extends T> List<S> save(Iterable<S> entities);
}
